{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "%load_ext autoreload\n",
    "%autoreload 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "from path_explain import utils\n",
    "utils.set_up_environment(visible_devices='0')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import tensorflow as tf\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib as mpl\n",
    "from sklearn.decomposition import PCA\n",
    "from train import load_mnist"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib as mpl\n",
    "mpl.rcParams['figure.dpi'] = 75"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "(x_train, y_train), (x_test, y_test) = load_mnist()\n",
    "\n",
    "reshaped_x_train = np.reshape(x_train, (x_train.shape[0], -1))\n",
    "pca_model = PCA()\n",
    "pca_model.fit(reshaped_x_train)\n",
    "\n",
    "transformed_x_train = pca_model.transform(reshaped_x_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "pca_components = pca_model.components_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "first_component = pca_components[0]\n",
    "first_component = first_component.reshape((28, 28))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1MAAACwCAYAAADqgDQtAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3deZAk+V0d8PerrKur755zd/a+pNWNJGRpjcAEELYFyLaQLQJjs2CwgQhkwDjA5gjMZWzOIIQdtgETgSE4fAECIyHhEdYFuq/d1e5KO7tzH31MV3fdlT//UbWxrX4vl+yc6ft9Ijom5jdZlVmZ3/xVZtd8X4UYI8zMzMzMzGxrSru9AWZmZmZmZvuRb6bMzMzMzMwK8M2UmZmZmZlZAb6ZMjMzMzMzK8A3U2ZmZmZmZgX4ZsrMzMzMzKyAHb+ZCiG8LoTwuyGECyGEXghhMYTwpyGEbwohJDu9PQdBCOHhEMK3bGH5egjhZ0IIF0MI7RDCB0IIX7qd27ifuWZvvgI1+1MhhHeO930MITy8jZt3ILhub76t1G0I4dUhhP8cQngshNAKITwTQvjNEMLd272d+5Vr9ubbYs3eGUL4/RDC0+Nrg2shhPeEEN6w3du5X7lmb76tXh9seuwPjK8R3nuzt+v57OjNVAjhuwG8D8ACgO8H8JUAvgXA4wD+I4Cv2cntOUAexmg/5vWrAL4NwI9gtM8vAnhHCOEVN3/T9jfX7LZ5GFur2e8CMAHg7duyNQeM63bbPIz8dfv1AF4M4JcA/G0APwDglQA+HEK4fVu2bh9zzW6bh5G/ZqcAXAPwQwDeAOCfAGgC+KMQwpu2Zev2MdfstnkYW7s+AACEEO7BqHav3OwN+ivXvVNf2jv+5OM0gLfFGN8q/v1eAJMxxk/uyAYdICGE0wDKMcYvybHsywF8HMC3xBj/63isDOAzAD4bY3zjdm7rfuKa3T5bqdnx8qUYYxpCuA/AEwC+Ocb469u4ifuW63b7bHGuPRZjvLpp7E4ATwH4iRjjj2zPVu4/rtnts9W5Vjy+jFHNfjzG+LU3c9v2M9fs9ilasyGEdwA4A+AFRR5/Q2KMO/ID4I8w+o1HPefyrwHwLgBrANYBvBvAazYt8+sAzgF4NYD3A2gD+CyArx7/+/ditGNXAfw+gGObHh8B/CSAHxw/TxvAnwN4xablAoDvGT93D6NPct4GYEY8308AeCtGk08TwHsAvFi8vjcB+CCAFoAVAL8H4I5Ny5wB8N8w+g3no+P98GEAX7JhmdPj9W78Of08+/WHx6+hsWn83wDoAqjtVE3s9R/X7N6o2U3Pf994+Yd3uz726o/rdu/V7aZ1XQbwq7tdJ3vpxzW752v20wD+127XyV76cc3urZoF8A0ArmL0KeFpAO/d0XrYoaJLxjv4t3Iu/7JxEXwEwJsBfB2AD43HXr6p8FYBPILRR4J/C8D/A9AB8HMA/hDAV4//bRXA74pCOYvRx7R/F8BbxsW1CGBhw3I/NV72bQD+5rgI18brKm16vjMA3gHgjeNtfwrAkxjdJT+73LePl/01jD5Kf8u4sJ4CML2p8J4ev/Y3Y/SR8cfGhTo3XuZFAD4K4BMAXjv+edHz7NvfxugTqM3j/2C8TXSSHMYf1+zeqdlNr983U67bfVe3G9bz4Hh7vm+3a2Wv/Lhm917NYtQCUgZwEqN2gB6Ar9jtWtkrP67ZvVWzAOYx+iXVN4//fhoH9GbqxHhH/9ucy//3jTt3PDYDYAnA/9xUeBHAl24q2jguoGTD+M8D6G8aixj9ZmFyw9hd4+V+fPz3BYw+sfn1Tdv4jePHv3HT8z0BoLJh7M3j8YfGf58CcB3Ar216vrsxmrC+e1PhLQOY3zD26vHzfcOGsdyFA+CdAD4oxr9y/Lyv38kC3Ks/rtm9U7Ob1umbKdftvqvb8WPLGP1W98rG9Rz2H9fs3qtZAD+L5z4VaAJ4027XyV76cc3urZoF8CsY3QiGIo+/GT97NRr9SwG8Pca48uxAjHEVwB8A+LJNy67HGP98w98fG//5rhjjcNN4GcAtmx7/xzHG9Q3rOYPRR5WvGw+9FkAVo48mN/ptAAOxPX8aY+xv+Punxn/eMf7zdRidRL8ZQig/+4PRbxMeG7/2jT4QY1x+nuezvcE1+xzX7P7hun3Odtft2wA8BOAbN63HtsY1+5ztqtlfBPDFAL4WwP8B8FshBIcpFOeafc5NrdkQwusB/GMA3xHHd1K7obxD61nE6OPMO3Muv4DR/+Hc7BJGH+dttLLxLzHGXggBGN39btQb/1nfNH5ZrOcyRilMz24LNm9PjHEQQljc8O/PWtr09+6m9R4f//kusV6At/sLni/G2B2/vs2vI69l6OPw7OvYvP2HlWt279Ss5ee63YN1G0L4aQD/FMA3xRjfeaPPd8C4ZvdYzcYYz2HUcwMAbx8HAvwsnKb6LNfs3qnZ/4RRQvW5EMLceKwMIBn/vR1j7GY++ibZkZup8UE6DeCrQgi1HC9sCaP/q7vZSfCBuVEnMsbOb9iWZ9f9mWcXGN95H8HWbz4Wx38+vPH5Nmhu8fm26jMA/l4IoRFjbG0YfxFGJ+eT27z+fcE1+wV2u2YtJ9ftF9gTdRtC+EGMYpO/K8b4Gzuxzv3ENfsF9kTNCh8G8N27tO49xzX7BXa7Zh8c/3y7+LdljPrBfnGbt2FH/5vfT2N0oP69+scQwt0hhJeN//oeAG8IIUxv+PdpjD5yPn2Tt+sNIYTJDeu5C6OPQT8wHvogRjcZX7/pcW/B6GZ0q9vzfoyK674Y44fFz2e3/hLQxeg7ePL4QwAVAH//2YHxSfQWAO/ciTv4fcQ1O7LbNWtb47od2fW6DSG8FaM0rB+MMb6twPoOC9fsyK7X7GYhhBKALwHwuaLPcUC5Zkd2u2a/XPx8AqMEyi/HqF9t2+3Uf/NDjPHPQwjfC+DnQwgvwqjR7hmMPuL8CgDfilG04ScB/DhGKR/vDiH8O4ya074fQAPAj93kTWsDeGcI4WcA1DCKCF8F8Avj7V4KIfwcgH8VQlgH8McY3QX/BID3YhSPmVuMcTWE8C8B/HII4RhG/x/5OoBTGP1f1dMxxt/a4mt4BMB3hhDegtGE18wq4Bjjx0IIvwPgF0MIFYzSVr4Do2bBf7jF9R5ortmR3a5ZAAghfBmAY3jut3uvDiGsjbdvRybL/cJ1O7LbdRtC+HqMfiP6JwD+LITw2g3/vBpjfGSL6z6wXLMje6BmfxSj/+b1Poz+C9pJjL649zUY7X8bc82O7HbNxhhPbx4LIaxglDZI/7Zt4s6noDyEUf78RYwSRpYwSpj7RnxhJONfQ85MfrGOiNGXIm4ce3g8ft+m5X4SwL/G6P8HdzBKBMmTyf/LyMjk3zR2F0T6GEbxkf8XoyJvYZSY8mvYEAGJcSZ/xuv70Q1/P4nRCdEc/9vpv+IYTGCUBHNp/Jr/AsDf2Ola2C8/rtk9UbOn8Vy61Bf87HZ97NUf1+3u1i2eS+ZSP89b74f1xzW76zX7RgB/hlHiZBejGOs/APDXd7s29uqPa3Z3azbjmJzGDqf5PRsjeCiFECKAn4wx/tBub4tZHq5Z249ct7bfuGZtv3HN7p69Go1uZmZmZma2p/lmyszMzMzMrIBD/d/8zMzMzMzMivInU2ZmZmZmZgU8bzT6C3/4F/yxld2Qx378e8JOru/uX/o516zdkKfe+i92tGYB4K7/8LOuW7shZ77z+3a0bl/wP37MNWs35LNf9yM7WrOv+Ue+PrAb85e/oa8P/MmUmZmZmZlZAb6ZMjMzMzMzK8A3U2ZmZmZmZgX4ZsrMzMzMzKyA5w2gMLPdFXc8CmHrglt6bbfs1PnhGrctChkTY9wPk7qZbYk/mTIzMzMzMyvAN1NmZmZmZmYF+GbKzMzMzMysAN9MmZmZmZmZFXC4Aijy9n2K5XaqZ1T2rG6l+dmN0nvKjvUa71QKhJunLY8bKJOoajnr+dR4KefjtzLXqrpPxWrynh+ep3dEVgiEGi+JuimJ5crJkMYS8diKWC5LKupmmPLvugdDMSaWA4BUjKcpr8eBGAeMvH4Vx12VTUYp5C2RvNevQcydo8fnnBj34PzpT6bMzMzMzMwK8M2UmZmZmZlZAb6ZMjMzMzMzK8A3U2ZmZmZmZgX4ZsrMzMzMzKyA/Z/mt5UgGpVyIm4n5VjC8SEx2cI25Uw0CSIAKIgEHgA6TSojJSXP9tjNtx3pjPo580VQZob+3ch2qvLMSgVS55FMZMu5bts5Nxj6JVP61HFWaXxlXYylikhWK/MkGMRzquCo4UBP6mlfbKgYi3nn77zpgpZbqcTHXSX0ATppb6Lap7GpSo/GpqsdGput8NhkuavXLd7k14Y1Grven6Cx5U6DxlZ7/FgA6PQqNNYH13cqrhmc8LeLMhP18s0jqZjCorjST9VYRa9cXuuq6XwgxvoiJZNPtfHjxTVLuj8mRl+ymJmZmZmZFeCbKTMzMzMzswJ8M2VmZmZmZlaAb6bMzMzMzMwK2LsBFDmb2lVYBKAb3VPux0RaEcvVRLNyTXRpVnTaQxDrVqJqau7yWKmjX2TS5R2iGvuCbOpTGyRXY3mpsAjVkC6OB6CPXdLhZcvc64ykzWOVdd6gSkvXbNLjZVWNDCa4FrvTvI39Gf0ae2LZYUOdq+IcVKeB+6RvXM7wkawgnLw1nnfOUc3Sw8mMubbGK5+d5pNhYaLFjxWBGGsZzfwrLQ4DaLeqNJZ2uFM7DkThqvCgzM5zPXyYqbCJJOGxWlkUJ4CZOk+iR+rrNHayvkpjt9eXaOxYuUljKmgCAJYGUzR2rjdPYyqAojvkk6OXEZrSH/L4cMi1mGYFXG2izpfsZXMvenjIjCgezL6m5TF1TTus8nOmPFVhKMYyQ9UEVd6JylwR9aVCKbZCleJuZ6b4kykzMzMzM7MCfDNlZmZmZmZWgG+mzMzMzMzMCvDNlJmZmZmZWQF7I4Aib9iEaI4bVnUj27AumtonuWOuMssdc0dnuFl5rs5NzfVEfN1zhlS8oPaAuwebXfFN6OvciAoAnVVettTkQ5rwy5HhFbJf1s3PmmogH/I+TXq8XNLWnZIV7n9GZZUPQH2FV15f4vSK6uU1fsIri3Ldw0VuqkbkdSfz3Cid3nMrja3dzU3WANA8xSdxN+e3szts4iYQNaq/tV7UciujbkWZVUXdqkCU0oDHBnX+HV/nqO6MXr+1TmPLojt5osLnx/EGhwbMVEW6S8bjryWTNNYs8fYM26KYVfiQzis49FTwQakk6ivhHThVUx3xwHyN3xSP17iQ5yu8XFd0/X9q/TYae7q1INf99HUeX15t0NiwyesJIuAkI+cCsSxCfNT1UpXfT0oVftKSCNYqidCP8Zpo5FCFUsiwNBEMocJ2RDAEAAzr/PgBlw36M2JOneLjFDMC1JQgQnSCuIZUgVmVptgZGcVQbolrjpzXpTdaXjcaYOFPpszMzMzMzArwzZSZmZmZmVkBvpkyMzMzMzMrwDdTZmZmZmZmBex8AEXesAn1pfGioTKt6YSEdJa7quePccPxC49cobF7Jq/RWBK4We9Sd0au+3Kbx3vi28inK9zsfGKCt7E3o5uvL0zP8jYt8tjgGgdViJeDRH0TugModLOjGhONkrKRX4RSjJbNt560ws/Zm+VTOYZpGqtW9SlfnuRO1rjOzddhgsNQYsIn61aaOdWy6vyPouk89xNmUPv3wBDnuAqbyNs0XL+md9bkZS78+mUO7Cl1uMDTBndbt09yiIOqbwBIRL5Ab5Wf82qFA1FqZd4ZtzSuy/XcNrlCY5VSvsSI1ZTPmVTMtSLvBQAQDvm8LAMoxFi9wsdzoiwmVQDTFR1MsdkzbQ6LeGr1CI2dvcLBPOEi1zEA1Bf5eE7z2z6SrghxEOe0DOsB0J/iSbTHlwfoz/KTpg1Rn3Wud3VsACCIsIrDJIqABRk2wZdmGIh9DwA9cbnZWxBBIUe4tuenRQqZsN4WGwSgu8bjsSxqpCbeuEs8pq6LAB1mlPTynQfymiER25h1eeAACjMzMzMzs53nmykzMzMzM7MCfDNlZmZmZmZWgG+mzMzMzMzMCtj5AIq8VM+tauBr6G9xbsxxA/R9Cxws8ZLpCzRWEV3aj6zdSmMfv3xKrnvlKjc7Q3yDdDLDSQS3H1umsXumF+V67p+7SmND0V13qcPNsbHN364O0ZOb1aB/o98Wvdu2tP15Q1PEzhKHHUPdl4wu9zrnDl1R50YY8GC5KTqQAdSW52is0hSNn6IeBhO8M/riFACAwRQ/wVC9nkrOrzhXp/9h7H2WgSi8w1Tjb3mdx2rL/ISTl3TgQuMsd8+XVrnhOZ2dpLG12zmcYeU+Dtxpn9TzfKzp8c06TW6gvlbl7VEBQABwW32JxqbLHCA0TPmE7/b5PGz3RKiQOF6mqQAKtffKJV0f7SG//11Y57nxqas8KcczXDczz/DaG1f1+VJp8Tap8KLMRJLNi4kgAADozKvgKq7PtCrCEsQYZGhK/prN+XL2NPX+l3cX6KAlsU913hiiuBZQ75OVChdTXwSgra1w6FT5Eof3AMDkSr4gh0Ej30FWYVsAUF3nc6O+yAurgI9Bg1+jutZKM84X9R66letEfzJlZmZmZmZWgG+mzMzMzMzMCvDNlJmZmZmZWQG+mTIzMzMzMytgzwZQxJJovBfNdmGSwyIA4PgMf5Xy7RMc7qA8tnYLjf3FuTtpbPDktHz83DnuWgsD3vbOUW4AfPoBvr89Ul+X67l3igM1mlPcaL00xQ2zw2V16A9mA/SWwiZE3alfOaTqG95lzXJDZWVCd18en+OafcHcFRq7u8HHvSS6J5/ucPP0p5e4tgHg4mUOoMAaN2lH8brDBJ+DiXjdAJCKJua0Kzpu+7zTVaCCjYn9qprag5guS5yDgzLnR6CypufaMOBjPTjBzfyLL+V5aPFVvJGn7rpEY7dW9DlzbonrtnuZ59XSGs9310u8PUsz/FgAuKvBIUAzIoBiuspj5TK/xiDmigPQn78lKpBA9JXnpkIpBiIQBAAurc/Q2NnLHNRUe5wDUmY/l69JPotslK/la/BPemL+zchgUU36ecOU5K/ZRc2GrIQqtZp9NH1nvixVs3JMDPZEINCQlxP5Z+N1ixopcS31OjyvpSJkaOEMr2L+UQ5uA4DyKs9r7VN8/bv8AF8z9Pi0ylRp8lxZvczXRbEsrg+O8NydVkXQ2jbxJ1NmZmZmZmYF+GbKzMzMzMysAN9MmZmZmZmZFeCbKTMzMzMzswJ8M2VmZmZmZlbAnkjzU6k1qQjhGE5ybM38nE66u2+GE8+OVHjZ5QEngDy2cpzGOhc4IWX+83LVmD3D8VgqzW+tVaWx3jyPXT/FiUIA0BAxXLc1Vmjs6UlOdVus83PGJq9DJYIdCFlxPeLXCyrBDlWuxXKdY3hmpjkW7cEjnNAHAF+58AiNvbL+jFx2s4927qCxj6/eRmNXljjFCgDCItedSs8bHuWau/UE19zChIiDA3BlfYrGri1zKtBQpPlB1eKWohoPgBuNfMubRpWKtLmS3te9Yzw3Lj/AqaLLD3HtfPWLP01j90xcpbEPX+c0VQD4fPcojVWWuXbKLd72doXfZJY7eq5dHdRpTKXHdYb8nMMhb08U6YsHlQo2u9FlSyWefxMx1k9FUiiAq02u2dJ5PsaT53iDqqsivXKS19OZ07+r7s6LeZVPF/neW+FgM5T6eqcNGryenpj+BxPi8SKNtVTmMZVKeZDpuVIsKAq53BHJfeLYRV2yKLf5H0oiIVDFJk5cFdfOn+L37fSTj8l1pyI1sHzk5TTWm+X5r3OCr4vCMP+tR7jORa9mz6TB1zCYE4nEGVPvjV5K+JMpMzMzMzOzAnwzZWZmZmZmVoBvpszMzMzMzArwzZSZmZmZmVkBOx9AIZq8Ypmb8IaiKbIy16Gx+xY4aAIAHpy8SGMl0Sn4RIvDJhZXuTm1tsQNeI2rOp2hfp6THGLCL7w2w8+ZdHhskOp73umE90dFdK2qMIBrde5ETcu8njA4PI3SmUTXaUi4lipVbrQ8McXNk6+c0aESKmyiAl7PO9ZfRGO/88yraOzy48dobPrzupYmFnk9HdEofV00Vd8zy+fgvQ19Xn4EHJRxbYVDKVTdqUAMOZ9klGxW5siBpfaDCliRoSv84P607ozuzPH48ot5Z7/m/qdo7GVTZ2nsifYJGvvk5VvlupNzHBowcSXfnNUR03fMKJ6mCKDoiibqxTYHGvW6Kk1JpS7JVR8qonceJRFyUK/wXFtLeKwzEPseQLvJx7OxwitP+nxQurN8wnTneaxzRK4a/Rl+TlV2SZcH04qqT12zgwbvt8G0WHeDT4RSTYyJgI+QMamq43ggqJcrwiaSngigWOd9Wm5xzWYF/cTAKSXDmgi3EfN5pSWuYboiGKImklAAlO44RWOXX8LnUHjZKo3dOcPXQGc7J+V61GuP6xwcF/u87aUjfE0bIm/jdhWnP5kyMzMzMzMrwDdTZmZmZmZmBfhmyszMzMzMrADfTJmZmZmZmRWwvQEUOZvDU9Ejmk5ys97tC9zc9rKZ83LVt1UXaezp3lEau9yeprFei79JeZJ74FBf6sl1h/U2jcUpbkweiObBYZ0bBWerHDQBALMJB0s0xDdVz9Z4e1SDaUx0s+6hIhtMRVNkKgISRDPuVKVLY0fLXMcA0Bedo+8SYRO/8thD/OCPcfPlrZ/lYzz9JH/rOQCEPi+79EXzNLY+2aexh2Y/R2MLZW46BYBPrXKQQDrIF3wislX0t8Uf1OZnIPu1idqTzbw5AyiG4svkO/M6gGLtNhGucysf/9kKz0PvXbmPxv7y7J00ln6OQ0oAYPIcr7vc5n3RFWEqaYMb6quJDhVaH/AOWexwUNFqixueh321g0V9ZyWnHKLgFDWHVsQxqZe5AV0du+td0YAOILa5lkvi7Twt8zFR50afSwEDEaIFAGlFhAGIelDnZX9ahHWJOgaAKK6hynXRuC/ClNRxOLChEluhMpDEYS71VQAF7/vydZ4T04mM6zARQDGoi/pUGRKimJJ7+f29ekQUMoClB/j6tfUQXxR/2ws/QGOXurM09kyVQ4YAIKTifazD11Bpl8eSFo8F3uXbxp9MmZmZmZmZFeCbKTMzMzMzswJ8M2VmZmZmZlaAb6bMzMzMzMwK2N4ACkUGUIim02luJrt35hqNPVi/IFdTEZ1n1/ocNnGtxQ13scXNqbUV0VC4zM2DAIABN34Op7krsH2M72XTYxw2ccfkklzNnAigWE+5O7aecGhAUhEBFIfp1jqz2Vt0k6o+YhFAoah9X1VJCgCe6HFT5h9efCmv+jMcNnH8M1zvU5/h8yWe1edLOMbhLN3ZIzT24KlLNPbKiTM0drbPjwWAZo8bwmOPC6+kdpE8ZoeoO//5qF2Tc0yFePQnRWBDRl909yg3sE9WuB4/ce0UjV25yrVcPcM1MnVJH+dyi8cH3CuN7hwvV5ric7OkuskBLHf5SZdbE7yeLu+kqAIoDlHZbiW4QAUflEVAQi0RzfxiXh2m+k1NBT4o6j2xJJraE5ERlXQz1hHy1UMsi7CJWX6NjQW+DgCAuUm+PlFb1B3wZWBvwJOC2pfD4WG6aMi+bNis1OOaTZoiIKEpjl2NAxsAoDfJ+7or3mZ7M7zu9gne8M4RnqsSMX8BQPNBniv/+cveQ2NfNfkojf2X7utprNTWO1IFd0jiOi30+cQMQxFosU1BKofrTDAzMzMzM7tJfDNlZmZmZmZWgG+mzMzMzMzMCvDNlJmZmZmZWQF7I4Cizk1iC9PcPPnA5GUaO1Zelau50Odvd366tUBjy9c5gKKyws2Xkxe58bO01JTrxoAb4XrzHAzROsGv+/hRfj33T1yRq5lL+Buo+6KbvCa6+ZOE190XjeiyYxXYVw3Uqqc8swlRLBtE2IR6+aWSCFIJ3AzaUx3/AC6Kmr18nUNTyqJnVX3TdxjyujHLDf8A0L33OI1dfxHXzT879ikaq4vG70c7t8r1XGzy6wldsT9UwEdGOIBpqsbV2JCzcWQoxWBS7/90ko9/p83zXfMaz7XVS9zwXFsWK8k49N05fkE90b89mOJzIYoaWxKhEgCQiNpri2bttKd2HP/OUs0p+2lO3S4qrCIp8bGrive0apJvDABihZ9zWOdjl4orpLLInUp6oiE+I+Qi7/vRcJK3cWKeV373ER1QtVDj64POkGv2epdrfq0vrle6PJZmBDHF7ery3yFZm5/3LSjpiOvFJh+P2OFQinRCX5Z3jooQiVMcDDF/gq8hG1VebrHJ87G4YgAAvPneT9PYt84+RmMXxDXHM+t8XZNkBFAEFSxR5zcoeW2jni8Vz5dxDG+0ZP3JlJmZmZmZWQG+mTIzMzMzMyvAN1NmZmZmZmYF+GbKzMzMzMysgB0PoIiiST/WuJns+OQajd1ZvUZj9cCNdQBwdcCN9mebczQ2XObmtumr3Ik2cZ6bB9PlFbnuMMWNfb0Zbm4dTIkACvG6s0I2pkv8tevNkm6gtpxkF6LqGM73dP3Iv69opvoYdVJuDp6a4AbVxVv4fFnp8KkcyxwqEVWHN4DFF3N9PvRFj9DY6xtP0tjZAZ9XH1y6W66nucTnRqmbs/NTLba/+5xvHrlvuEhFiSGWxXLinSE2dDN/eZLn4DQVv6fr8ZgKuugu5NseABg2RLCEeD2qszqu85M2hw25nqTKT5CKgIEoXqPs6nbYRG4lUcdlEUAxW+FwhtK03tHrJzlMYWXI1wxpmWtEBVD0Znk9vQWRCgQAIvwpiJAS1Pk1TtZ7NKaCJgDgWJWvJdopv261f5X+kE/W3kCHKe33AIpMKhdJnN9Jm+fEuCaOk3g/7s3xMQKA9Vv5ON13zyUa+/Jjj9PYnTW+dn6qe4zGShkT09fMfILGpkp1GnukPUVjF9f5vEp6uj6GVRHWMymuGcRjY1W8uYn9u12l6U+mzMzMzMzMCvDNlJmZmZmZWQG+mTIzMzMzMyvAN1NmZmZmZmYF+GbKzMzMzMysgJ1P8xPhL0mDU29O1Js0tpBwOk0q0tIA4NqAU0VW1jlFLWny4+uLnGiSLPP2DNZ1ik55bpaXrYXmzywAABO5SURBVIlUEZEQNVXm9LbpRMQHAZgMvN9KIjoqFfElQ5EelDPU50DIeq15w/wgkrx6PT6drrSnaexM7ahcdyVwetNt05wYuX47p/2sRV7PYJK3ZzChX/jsK6/S2Pfc8k7eHjFjvL15B409cZmTggCgtMJPoJJ91HHIONUti5hr04qInhLzUHmC55ZGg+cmAJiocnJVq8fJSi1x0g1nxIEuixSzCU4xA4Bywtu+tMLpT3GJz5lknQsq7WekTInEWVWkYSAer9L8nEx5Q8ol3qkna5x6+5LJC/Lx909dobGPzd1OY0/dskBjwyHXzS0zfG0yVdXny9PL8zS2do1rVtXXMOWxQaoT9dQ+UgnAQ7GezoDP37VEJAGKdGYASFXNH1Ah5X1QavF8FTtcDyVxrdhZyEhIPMnH7suOPUFjf2fm4zR2QsyTHxbX0+f7XJuATuy9OuR5/33N+2lstcWpf1lppmlFJL5OcOK2mirTBi+XlnduUvXliZmZmZmZWQG+mTIzMzMzMyvAN1NmZmZmZmYF+GbKzMzMzMysgD0RQFGtcSPbXKVFY/USLzfM6NpdG3AzWq/LTZXlNj++usYN0OhzQ3aW2OCGu5R7NxHrvJ7jInjjWMJjADBd4sen4v64KfbFoM8HQvR9GyDDJoLYz70mH+QzgRuY13p8PADdsKyWVXWsToP+NHd5Dm7Rjfxfdwc3rb6qxq/nc31uWn3f0r287ssc9gIAtRXx+xux7cMab3ssiQVFA/Sh7ONXgR2J2DciWGJiiuvuyBTPv0cn+NgDutF9rc91257kup0WNa/Ch06IcAEAuNjhBu4PDzhIoHmdazmI87qkTw/EAc+XMsRGBASo4xDL4sGHsnD/aipAqRy45o6WuT6/eOLz8jmnxYF+zeTnaOzMMQ7SUUFBx8tcn59u3ybXfXaFm/mRM7hkmIrQlIzCUddLatsH4jkXxbWFy1MTu1RfL0YxD4hwhd6U3tMNMU/fUuGAqoo4Nz4/4PnvvWsP0NjHV3TN1hOupdkKB2Kcb4lAjRavW1z6AgCiuCOJIlgCFV5wOMXLDUXwW2Yh32AAmz+ZMjMzMzMzK8A3U2ZmZmZmZgX4ZsrMzMzMzKwA30yZmZmZmZkVsOMBFOrLuisi+WBCNLwpnSia8QG0ReJDKhqOE/El5Uk339d3lxoNOT6c528z787zuueOcsPsSxvnaOyusu6KHoqGuSuDGR5rTdNYbPGhDypj4wab8vYb3VQuluvx7yFCi8f6q7yfL1R13aim9NDnuqlc5/XU1ni5gciAmJjmplEAeLB+nsZaKdfdu1vctPrIuVtorH5Zf4u7yJXBUIWziLCJKMIm1K+DYtaviA5wB3VUhVvhwq01eF6dn2zT2MlJbqifr4qDl6EqGtgh+ohVsMQLGpd4e8rcaA0AjyanaOxzjaM0tlrnOTl2VACFLhLRy48gwiZScQ6rJmgZQGGqRx+DIc8lrQG/77dUylOGYwmfG7OlazR2f2WRxhLxprgi1v1nvQfluteaHFBV6opgiSl+Q56q8wXL8ZoOqFKBHEpzyNuTV5BvmAeXyEKR10ghFYNVrtlY50kxreR/o1oa8rz2oc4dNPbRtTtp7E/OcH22rvLzAUBocC3Oza3TWBQ7KG2La82MS+wY+PEqWELpzfL+HVbF3CvWAQBBTT5b4E+mzMzMzMzMCvDNlJmZmZmZWQG+mTIzMzMzMyvAN1NmZmZmZmYFbG8AhejzUt8Gn5S4G01963kn5QazPnSj+1A8XjXHZTXC0WPFN1WHxkm5bPNubuJbu4sb+L72FH/j+usbPHY80U2Bn+lx4/hnW7xNV5v8+FKH76NLIqDj0FEZB+Lb6ROR45C0xXKqoT2jz1H18qrG96TLC6bivOqLsplp6AAKFeTyrvYcjf3ehVfRWDjLDcz1Rf0iVS4BJkXTqsiVUWNRhABABVUcdOqL3ss8uU3UOFRkpsY1ob7xPksiClcFCE2WuXn+nomrNPaq+hkaWyjpEJ5+5LewoxPcbP1MZYHGZLjLqp4Dy+K0ScW750DU8rB2COtxg6y+btUHrt6jO33e0dfaUzT2ePUEjc2XuUkeAOrhKRq7rczv0QslnnS6kZd7os8hT4+vHpfrTtf5OYOYv2szfL7cOb1MY+ocAoBjZQ53WU05lUhdaw1EUljea6pDR9VxTRzjOr9PpjVx/ZqxS3s9Pg+ebHGNPQke+8CFu/j5nuCwskbG/Nc9wteLTfH+EsS1vAzrUtcB0OEbvTkOd4kJL9efFCEuKsxjm6ZjfzJlZmZmZmZWgG+mzMzMzMzMCvDNlJmZmZmZWQG+mTIzMzMzMytgWwMoZG+iGBumfE/Xj9yYp8Im1LeRA8CM6Biu1rkpetDgpsDOPK+ndM8RGutN6/CLxZfwi7zvBRdp7E3zH6GxByqcGnA95aAJAPhQhxutP7lyisZaK9x0WumIA5EzjONAU99mLpolVdhEbYUfXF3lsUpb12wY8rgKSFFNle0F0XzJfZsoZXxj/fub99PYk81jPPbELTQ2c5G3p7qmiykt5wyBOdw9+1unAihEU3s54Z2twiZqIimkkpHWUxLjc9UWjd1RW6Sx1058nsZeUeOwn6EImgCAj3KPvgwnCIt8MjRE3daXdeGJfnz0ZnM236tAFPftS6kIlBn0uZn/Sp8PSGfANZJm7OjJEhfO0eRpMcZ10xry+fJYl+fFi6vc4A8AQQQ9xRqfQzOTfA1zvN6ksbmEz7Usa0O+3lkdiGugIe/LwZD3+aELoFCXTeI9LZ3ifVrqc3BJTEQQWE/PQb0m1+Kjyxw4tt7j82XtHNfi1FURmCXmUwAYNEQwRIdrJIi5rtQV7/kZ7+99sZ60zHWXigAKFQiklPgw3BT+ZMrMzMzMzKwA30yZmZmZmZkV4JspMzMzMzOzAnwzZWZmZmZmVoBvpszMzMzMzArY1jQ/RSWjdbqcPnKtx4lMzSGn0p0sX5frubd+hcbuOcZpUo/ezslRMXBqyvotPNZd0JEkEw+u0NgbT36Sxu6rrNLYFZH0c7p9q1zPH197KY09dZlTB0vX+TCXevx8GWFdh4pMmVFhXGJfJRy+hPoSF3z9qk5nLK2LKJ0g0q3mGzTWnxDpQT1+7KVrs3Ld72g+SGOdRT7fGk9zLanEwiwpn+oYitTBKJaTv/rJigU6bMRuiCoZbShSH6May5/SVRPxSPOVdRq7p8pz8t2VfJPOh7r6OP/GxdfR2LlPcLLasU/w46fO8wkbS/p1t05wQXZVolSF1yN2rwGI4pCmoj4HXZ5zYpeXu7rCc+D713gOA4DrPV525SjPqy+sXaCxx7ovpLH/ff4VNNY8r9P8ytdFevGcqBtxDqrzUl0XAcDVOE1j57vzvFyHr7XWenxdpOYOdQwPsijej9X7V2+WB6uRk5pjhZPqqmt6p1Yv8hx0dniUxkKPj9PERbEekT6c9fFKohL5WiLiVEyfKs0vi9qXKi1RhnTmTGLeLp7mzczMzMzMCvDNlJmZmZmZWQG+mTIzMzMzMyvAN1NmZmZmZmYFbGsAheoNL/W5c6zX5K6zJ1aO0dip+m38fA3dwDwt0gBePHuRxtZu40bLSw1uHF3vcbPd1KwOEnj1ybM0NptwQ/anexwW8UjnFI2dXnxArufR8ydpLL3KjbWVtmgeHORvCjxMZN+9+JWDbCpXzZd9rs/SCtcCAMSL3KAfB9zcXznO50Zj4gSNdee4tlvg+gCAoeglnVjnF1RuicfyajCY1L+nGXCPNwaif3pY48kjFduY9zgceCqAos87p93luXalywegJBJW1hPRHQygBD6obdVJLFwYNGns8TbPa7//eQ7bAYDwlxyocvcHeV6uPnmZH1zht7/u3dzQDQD9CRHmIepWBazERHVGy9UcKipgQY6J96pkjSeDSlNMBudVkg3wyWfuo7GPzdzFC4pAkdIq103jAq97YVEHCQxr/HrWA7+etba4NunoUAulm/J2qrCJpQ4HI3QH/NhBqgIoXMjqnO/NitAUEVgThlwj5baum6lz4tp5lVeuQheqTbEeEeozqOvjGfgyBOW1fJ/FlFvqdetlVdhESeyjvKFgcmybUlP8yZSZmZmZmVkBvpkyMzMzMzMrwDdTZmZmZmZmBfhmyszMzMzMrIBtDaBQTWKlnmgmXeHNuFDmb+p+d+QghjOzHOIAAHMVbkJeHXBDZ1LiDrX6RI/GhlW+7yyLxwLAufU5Gnv74OU01hpwk/b569xQvbLEDaIAUFrm5sOKaPZToR8qHEQdr0NH9F+qkIOhyHHoTfODu/Nc29UVfTyTNW4Oji0RcpLwBqkmzco6j1Wv6wZT9XqimB26C+rRomm8rItJhkiIMZT48bLX2f3PAICgGvdFAEW3xXPGlcB11+qLuSXRXcM90azeHfBB7fd5/u40eU6uP8Pz4pFP6XXPfuQcjQ3OPENjwxqvJ7zgbhprHdfBGd0FEUAxKUJSRGCBa/QGqV/5it1cFrk+E1f0PFRb5ffuckvMoat9Xu7aEo2FNU7miXPTct3NB3kS7Rzn82U44Be+3OWwlzQjBKIz5HN4rcfnwXqPa16dv2maLzDkIFPhBTGIuUG8n6ZlnifV+3Ys6X1aWVNhFWIbUxGaIgIkpIxrQPX4RASbqccnfDmdGUChtl0tK4Mlci63Xde5/mTKzMzMzMysAN9MmZmZmZmZFeCbKTMzMzMzswJ8M2VmZmZmZlbAzgdQcD8nKuKblId9boq8vMrfTn+pwUEVAFCqZXS4bZKKJk+Ixm0MudmuLRoyAWA54RAJmfggHl/q8LorXb2ekmzsE2ETO9iEt++JXZ2qMIUJHuqKLJS0wo28vWndmFy7i4MpSn1ed3+Sa6R1jMc6R8VjZ3RoSpwQ50uFlxW9togDMajOK+j6hDpVczY2yyCVw0jlHoh9Hds85beHfKx6PV6uUtFzqmpM77e5+b20yGMzz/C655/gN4nG49fkuuPSCo0lJ47zNt5xgsau38vn29opXbe9WRE2URXN44kDKPIK4uQNItSpJOpu2ODjNBDzYppxhVNd5Y76+lOL/PgLl3jdnQ6NJfN8HTJYOCnXvXaS3xO6C/waGzXexv6QH6tCKQCgK4Jh2n0eU885FHNCmvp37/K6SYZW8eCQsz8w3IbJQa1bBmLwdIxBXW+PCuFS1/IqBCLh0wVJT79x531OGUAhwkF28jrXZ4eZmZmZmVkBvpkyMzMzMzMrwDdTZmZmZmZmBfhmyszMzMzMrIDtDaBQVH+uaDor97kRrrzOjZKAGstoUMv5rcl5mwyzegdTsUlR7GnV1Lclal/qfIFcj7UM4jilFdGQLho6+1O8XOtWvZqYiMCACT6g5Snu6JyZbtHYLTVOKElEgzegm5DbfX5BrS6PddocFpOKplMAiGJnBhU2Ib4JXYVSqIc6lGIsbyhFVwQADfk4qzAVAEBJBDGo9YjzaCB659dP8mQ5aHCoBACEIY8PJnjd3VkxNicatSd18Qzr4nxX754OmyAqtAYAVL94SdQSVPCJyPAR2U0Y1nTN9qc5DWDyGAdG1Jc49CoMeRvX57kYmqf0utdvF8E+CzxXVxJ+3V0xT0cRNAEAvQEvOxAhEipsIuYMADIgqPcqtfvkW5p6A9PrUfOnGlPzUlrlJ1XXqVkfryQi7AziUkIFSKiwiRJnqwDICpvYH2/o/mTKzMzMzMysAN9MmZmZmZmZFeCbKTMzMzMzswJ8M2VmZmZmZlbAzgdQ5CSbyHOGSgC6kU01x5VuIIAi69vV1V6VX86sGgq3EHQh7Y9evX1PhoeoopVhJLpowwQX40SDOz9nGpzuMFnl5Upie7oZzcprXQ6R6PQ4hKAnAijSrniRA/17GhWAoM5rfSKI53O9bw9xTFSoBJCRzZOIwIZJru/2Lbxcb5ZrJ+ltoZ7kXK0CJERwhgiWGS0rBlVYgvv2c1O99zcSShFmeLlBXYdArM7z+PrtXGMlEcKj3mNVINFwUnfZBzFerfKYCotoiXk6awpMxePV/lXL2Y3JGwRWEuEKmde0MpQp33p0eIUICcrIGNLXqnnfo7fwJr2P3899FpmZmZmZmRXgmykzMzMzM7MCfDNlZmZmZmZWgG+mzMzMzMzMCvDNlJmZmZmZWQF7Ns1PhXmp7BCZqpax8FAklaQ5U1fU82UFjmVuU1H7OOHkUFEFoRJ4MlLRYpsLtD2o01i3zQlT13LWXJq1bpW+p5YVY7kT+gBdy07u210yOVUck35G7YiU1NzrUaVTUyl7Wc+ZL1FPlphMuMooshtNWbVcbiThL4gYtMDhdwCAVCSqphO88uEw38QaxPaUMlJbkyTfRYdatwof3oqYc661GyOvX7fh/Us+p5oSVcmJB8eMAlOvRyca53vsjc6de7GM/cmUmZmZmZlZAb6ZMjMzMzMzK8A3U2ZmZmZmZgX4ZsrMzMzMzKyAPRtAoWylkc296rad8jaTRtHIH1RzPwCoRv6uaBIFB1XkrveMVedujt2Gzk8HS+wg1Zy8m928qmG5Imp+O2pkDzYxG1OhFBoXSVLWHfUii2pX6eANF+hBIkMcRCGGzI84ctbDbr6f5t3EA1ja/mTKzMzMzMysAN9MmZmZmZmZFeCbKTMzMzMzswJ8M2VmZmZmZlZAiNvS2WtmZmZmZnaw+ZMpMzMzMzOzAnwzZWZmZmZmVoBvpszMzMzMzArwzZSZmZmZmVkBvpkyMzMzMzMrwDdTZmZmZmZmBfx/xRMj/o3vFYgAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 1080x216 with 5 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "num_components_to_show = 5\n",
    "fig, axs = plt.subplots(1, num_components_to_show, figsize=(3 * num_components_to_show, 3))\n",
    "for i in range(num_components_to_show):\n",
    "    axs[i].imshow(pca_components[i].reshape((28, 28)))\n",
    "    axs[i].axis('off')\n",
    "    axs[i].set_title('Component {}'.format(i), fontsize=16)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "attributions = np.load('attributions.npy')\n",
    "attributions_pca = np.load('attributions_pca.npy')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "attributions_pca_recovered = np.dot(attributions_pca, pca_components)\n",
    "attributions_pca_recovered = np.reshape(attributions_pca_recovered, (100, 28, 28))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "interactions_pca = np.load('interactions_pca.npy')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [],
   "source": [
    "import seaborn as sns; sns.set()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "select_interaction = interactions_pca[0]\n",
    "np.fill_diagonal(select_interaction, 0)\n",
    "sns.heatmap(select_interaction[:5, :5])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x7f3a077586d0>"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAowAAADwCAYAAACKTDVFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAXEQAAFxEByibzPwAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3de5Dcdbnn8c+3e+6TyUySCZfcuMQQk2hQNApezq6u2SNuIcjiOYtVligrLh4VyqPHs1Xqsge0tCwtLT1bupbAVrls7ZFCWEpEpDgKCAcoLokkyiVcQgLkMjPJ3Ht6ur/7R/dgzHme76STnu6enveraqozT//619/+/frpPPObeb7fEGMUAAAA4MnUewAAAABobBSMAAAASKJgBAAAQBIFIwAAAJIoGAEAAJBEwQgAAIAkCkYAAAAkUTACAAAgiYIRAAAASRSMAAAASKJgBAAAQBIFIwAAAJIoGAEAAJBEwQgAAICkuheMIYTOEMI/hBCeDiFMhhBeDiFcH0JYWe+xAY2InAEqQ84AJy7EGOv35CF0SPpnSedKekXSfZJOl/Q2SQcknRtjfK5uAwQaDDkDVIacAaqj3lcYv6xSEj8o6awY41/HGN8u6W8lLZd0fT0HBzQgcgaoDDkDVEHdrjCGENok7ZfUK+mcGOPjR92/TdJmSW+NMT56nM/xqqQuSS+d4HCBubZa0niM8RRvA3IG+DPkDFCZWXMmpaXKg6nEO1VK4l1HJ3HZzSol8gWSjiuRJXW1t7f3rF27duNxPh6oiV27dimXy822WU1yJmSyPR2L+skZNLTJ0YOKxcJsm9UmZ7LZntal5AwaW37woGJh1pxx1bNgPLt8+5hz/0x88wk8x0tr167duGPHjhPYBTD3Nm3apJ07d852haImOdOxqH/j5g988QR2Acy97Xd8SxPD+xoiZ1qX9m88/W++dAK7AObeC//4TU0dmDVnXPX8G8Y15ds9zv0z8dNqMBZgPiBngMqQM0CV1PMK46Ly7bhz/1j5tme2HYUQvEuIaysdFNDAyBmgMuQMUCX17pIGAABAg6vnFcbR8m2Xc393+XZkth3FGDdZ8fJPhPwhMpoFOQNUhpwBqqSeBePu8u0q5/6Z+Is1GAswH5AzQGXImYUkOPH6rU/SVOr5K+lt5dtznPtn4ttrMBZgPiBngMqQM0CV1LNg/J2kw5LWhhDeZNx/Sfn29toNCWho5AxQGXIGqJK6FYwxxilJPyh/+48hhJm/JVEI4fMqzYv12+OdfR9oNuQMUBlyBqieev4NoyRdJ+l9kt4h6ZkQwn0qzYf1dpUWhf9EHccGNCJyBqgMOQNUQV2n1YkxTkp6j6RrVZon6yKVEvlGldb9fK5+owMaDzkDVIacAaqj3lcYFWOckPTV8heAWZAzzSVm7XjbSNGM57uYPrdS5MwRvE5iR6xwe4XKWpKj83YO9tu//CB7UDFjP3d0Kh33OZx4KNrP677kJuvO5pMHAAAASRSMAAAASKJgBAAAQBIFIwAAAJIoGAEAAJBU9y5pAKiVYoWfeDFrd0W2DxfM+HS71/JZ2fNK0sRSu306O2W3Xia7Sg1ed2rruL2j6Q6uL8wrznvO7XqutLu50m5rZzYA72m9jmRJKrbaDyo6z+HmX4XxjJ32ble16zg+DxoBnwAAAABIomAEAABAEgUjAAAAkigYAQAAkETBCAAAgCS6pAE0Ha/z0uswnlxq/+zcfsjefrzfbsf0Oo/bh/0O1Ezevi+bs+M9zw6b8eGzFpvx3m0Hzfjhs/vN+FSP/SKKTsd4SuuEs7bvPO0SnU8qPcZuV7Lz1nU7hr23upMb2Uln87yzH0mFDnus3iwIXod2od0ebMuEvX9vTF7eHw9vrNV8juPVAEMAAABAI6NgBAAAQBIFIwAAAJIoGAEAAJBEwQgAAIAkCkYAAAAkMa0OauL222834x/84AfN+Pe//30zfuWVV5rxbNZbdR4LkTelyMRJ9vukZcyeXqPQbu+oY6hoxg+ts/fv7UeShs+y5ydpG7T3tff9i8x4zx/t7YfOOtmML3nGfg3edD7Rmcok60wLJEmFVjte8ZQs8Hmz4WQqO5hF5yO02Obsx0my1hE73mbPBuVOXRW890hCKNr7mu60xzS12I7n7RmqNO1N2+Mca296r1DwPw/CtBN3tq/ldDtcYQQAAEASBSMAAACSKBgBAACQRMEIAACAJApGAAAAJNEljaoaGBgw4153s+ezn/2sGb/88svNeGdnZ0X7R3PzOncL7fb2mSk7Prra7k3M5O2W0qyzn8xWOy8kqe3xZWa80GG/hpYh+2N7ZH3ejHe8bLcq53rt1xaDHZ/ucrbP+B2fnp49doe2192+4CWOi9ehW3Q61L2u52KP3Zbc2pNzntge1OS4/cSFA3a82Gbvp2XUflpJaht1Ovmd96J3LLwO43yP/f4sLLVzzDXpfE6M+rN6tIzbryHYQ6oprjACAAAgiYIRAAAASRSMAAAASKJgBAAAQBIFIwAAAJLokkZV3XvvvWZ87969Fe3n0ksvNeMdHR0VjwnNK+907k5lvQV27XCx1Vkz+qC9/egae0dL/mhv/4nX3W/fIenbf7TXU1+yw97+dVfYT7L3G+vs+H+aMOOHznK6ZafsDs7Op+wW845Bf83ilnE7Tje0wzkuxRb/GE93OR3D/XbLfl/fmBk/aZHdlryp9xUzvrpj0Iw/N7HcjP9+aIUZ3zvQa8bHBvyZLzpetd+j3jrM3jEqtjqzKfTZO1p56pAZ987O8IT9/9XYiP//WH6wzYy3jDozNkxX9ll3IrjCCAAAgCQKRgAAACRRMAIAACCJghEAAABJFIwAAABIoksaFcvlnLVFJV133XVVeY6PfvSjZjw469yiuYWi3fKXKdjvh2FnDejodJvmF3vr69rdkm2v2IvTdlz6qhn/1l0XmHFJKi621/A98C57TKN3bjDj8c32/vvusTtKJ062j9HyJ+z1cieXVr6YbabCpXcXDK8bOlvZGuiSVFxsv0dP7h82429d/pIZf9fip8342zvs7UeiXT7cO2B364/m7BfR1ma///OddlySCu32ta7pJU7HuLcG9GE7j7Od9jFd02N3SZ/acdiM7xq1O8afKfbb45E0MeIsfN0A//dxhREAAABJFIwAAABIomAEAABAEgUjAAAAkigYAQAAkESXNCq2fft2977HHnuson21tNhvwfPPP7+i/aBJOI2AGW+NWGe52cJGe13c8Gy3GV/ypP3EuSX2uq6XX3aHGb9g0ZNm/KK7/86MS9KynXY36MhKOzei00mb73HW1e6z4+Nr7IM6/rL9vEWnebNtZA4WrV2gwvEcSidnshm7q31F+yEz/q5Ouxt6VcsiM/7l/W80448/e5o9IEe23X7/txxw3nCS2oecWRDsCQE07RzY2G4fo5YWZ0wZO356x4AZPzBlH7tCIXGtroZrQ1eKK4wAAABIqkrBGEJ4Swjh70MIt4QQ9oQQYgiz/6wUQrgshPBwCGE0hDAYQrgjhPCOaowJaGSPPvqovvGNb+jiiy/WqlWrtHPnTknaONvjyBksZGODe/Tyznv09P03amLkgCRt5P8aoDaq9Svpr0i6sJIHhBC+K+kqSROS7pLUIWmrpH8fQrgkxnhrlcYGNJxrr71Wt912W0WPIWew0O3d8WsN7d1R0WPIG6A6qlUwPihpu6RHyl8vSHLnpg8hvE+lBB6QdF6M8Zly/DxJv5F0QwjhNzFG+48tgHnuvPPO0+bNm7VlyxZt2bJFK1asUIz+hRJyBpAW9Z+mrr5T1b10tXY/frsmRw9GuX/FR94A1VSVgjHG+M0jvz+G5ds+X769biaBy/t5MITwQ0mfk3S5pG9XY3xAo/nSl75U6UPIGSx4Kza897V/v7TNbjw6CnkDVEnNu6RDCJ2SZrL+ZmOTm1VK4gtEEjekW265pWr72rp1a9X21ayaLmcSP09G577pTvuOwS32GrFL77G7oXWB3c041L3UjGem7N3c9C27i/9n4++3H5BoHH3xg3b8k+fdY8bv+vu/MOOvvNP+OF/+ln1mfOxArxmfXGrvp2uf3VE6str/U/ie3ZWvP10tDZ033i8TnATITPu/fSjk7eNfdPZ1cqu97nF3sPczVBg34/fvX2vGw4j9/mkZt8fTOmzPRLDkGX8t6UzePh6HnJJmrNN+Dq9LOpu148VoH6PBafvzxtt+etpp55YUnJTx4rVUjy7p9Sr9uvpAjHGPcf/MvCybazckoKGRM0DlyBugiupRMK4p31oJrBjjmKRDkpaEEHpqNiqgcZEzQOXIG6CK6jFx98xMlvZ17pIxSX2SeiSNzLbDEILXNmdfMwfmF3IGqFxV84acwULHxN0AAABIqscVxpk1u7oS28z8BemsV0okKca4yYqXfyKcdTJkoMGRM0Dlqpo35AwWunoUjLvLt6usO0MI3Sr9imAoxnhM//mhtn77299W/Ji2NrtL7etf//qJDmchaKqcSXX7tY3YnZGjzrrKi56y31eTy+z9t9zdb8aXDttdl2OrnHWYT7H3P3a6Pf71P/ZPy0Uf/40Z3z622owPn2Yfi6ml9nMfeORkM55xluqdTpVXhs79iflDi84avplZp16rhsbNG+eQeWvWBL9h2N1XR4u9VnhrsOOT0U7MeybsFv/9w/Y6yR0H7V9cdr1iD7T3uZy9n2fs7n5Jil0dZnxi2XIzPrXYHlNupX0sejrtMbU6a0kPT9vjGZ+2kyyTWJzIPdXeFBI1VI9fST8lKSdpeQhhpXH/OeXb7bUbEtDQyBmgcuQNUEU1LxhjjBOSZiYY+7CxySXl29trMyKgsZEzQOXIG6C66tX08p3y7ZdDCOtmguXlmj6l0lQHP6nHwIAGRc4AlSNvgCqpyt8whhD+g6SvHBFqK8f/5YjYtTHGX0hSjPHuEML3VFrj84kQwq/Lj9mq0joQH2dtTzSzX/ziF7r22mtf+35mHWlyBvANvbxTe3fcLUmaHBuUyusGkTfA3KtW08tySW834m8/apvXxBivDiE8IekzKiXvlKS7VUr2B6o0LqAhHThwQA899JB1FzkDOKYnxzQ2sNu6i7wB5lhVCsYY442SbqzV41AbDzxgf5Y++OCDFe+rq8tuvXzTm95U8b6awWWXXabLLrvste83bdqknTt37vSm7pjRDDnjLK8qScr12WusZp01ndsP2d2G+S67o3D0rRNm/KQ72s14xwH7ebN2E6U699vjf/Yj/kIig9N2t+nz77a3n/yi/dp6TrUbfaf2L7F3tMaez7rjvk4z3jphH+vDp/sntGWyup2dy8/couVnbpEkbb/jW5oY3jdrzkjzKG+85tnUYWyxH9TTZr9JDxfsdY+fcd6H28ftbv3chN0BvGjYDKtz0O7C7njOTrLCq/vtHUnKnGGPaWqxfaByp9przq9cNWjG1/QMmfHOrL2fvZN9ZvzwlJ1LIeN3ScesfZ/bWO3vquqYuBsAAABJFIwAAABIomAEAABAEgUjAAAAkigYAQAAkFSPtaQxTzzyyCNV29eVV15ZtX1hnkt19Xk/wjqPKTqfYBPnjtl3vGp3LY6usp949Cy7K7Jtv/3EbUN2l+ajf/0dMy5Jb77tajPe/Tm74zraYeUft7uhp5bZq9P2/s6euWDRy/b6umMn20/cdriGbZrNwut6duKpZYRDm31+W5wFqA8X7Bx4dbrXjPdkJ+39O89bsJdVVuuw/b6afsGcJkmhxS9PJs5casaHN9j5+rq1r5rxTX2vmPHBKTs38kU7Bw5M2B3mk9PHUWI1wJrRHq4wAgAAIImCEQAAAEkUjAAAAEiiYAQAAEASBSMAAACS6JKG63i6pPv67DU1P/3pT5/ocNAsEk2AhTb7Tm/96UPn2uvlZpxOw5YxO946anf6tg7YH5FOs6Sc5Xh15YsfsO+Q1H7A3tnyJ+wFtF9+Z5sZL5xlrw19ym1222qhzX7Nk0vs8Xhr2baN0SU917zOeEkKztrDg5P2mtEvTdrd9Bs6Xjbjb+163ow/uWqFGX/o8FozfmjYft+e8uKZZlzB/6AYXmPnZf/KATO+vGPUjJ/Uaq+/PlGw18n24l43dNH7HGqxO8wlKe+sM+01T7trTM8BrjACAAAgiYIRAAAASRSMAAAASKJgBAAAQBIFIwAAAJIoGAEAAJDEtDrQ/fffb8ZvuummivfV22svYL9q1aqK94Xm5E2RI0nZXGVzRKy6xf4Iy/Xa85B07cub8cGN9pQfy87eZ++n1d7PxI/tqUYeXne6GZekrDMtyvP/0Z5HI9M1YcZbnu804+Mn2/uZ7rLHs2hP0YwXWyqb8kiSgj97CCqQOsZyUubwhD2d0kCnPd1OwZnvan2rPVXNxcsfNeOZTfaAHpxeZ8a79y034x0D9rRSkpRbYo+1t2XajE8582AdLtg5M1W0P1eGp+ztPa0ZO5dasnZckjvtWHSm2wnefDtzMN0OVxgBAACQRMEIAACAJApGAAAAJFEwAgAAIImCEQAAAEl0SUMDA3YXXIyVt1lt3br1RIeDJuc19Ulyf4Sd7rQfNLLG/gjrOGi/dwc22d3QIxvtjszx359kxnueM8MavWjcjBdG7OeVpEX77de2fIudl0Njdqdm5rAdH1thH4tCpx1f/IIZVueg0z1tN6BKkmImdbJRDbFgJ83kVKsZH823m/GHRtaa8fGivf2hgt1mPzptb5+dsMfZMmZ3NrcczplxSQpOd7Onp9Xe14vjS834dNEeaybYOdDhdGeP5+1zMJVPlF6JBmrTHHRDe7jCCAAAgCQKRgAAACRRMAIAACCJghEAAABJFIwAAABIoksa+tnPflbR9n19fe59V1xxxYkOB00uczzrCzudgG2H7TuWPzJkxt9w41Nm/Jf/9zwzXnSam5c9aXdDD73V7opc8rj/UTu81m6LfGLzLWb8ky+904zffWiDGe94yX4RbcN2B3Oh1T6mmbxzEgKd0PXkTWaRn7Lfc/tGesz4eN5+nzx5yF4f3bN7cIkZbxu0r08VOu348Dp7nJI0eZL9onud7Qdy9vrZRWfKhtO7B834WME+RkM5u2N8PGdvP5XzPw/CdIX55G3OWtIAAACoNQpGAAAAJFEwAgAAIImCEQAAAEkUjAAAAEiiS3oB2bNnjxm/6aabKtrPqlWr3Pu2bNlS0b6w8GSm/fa9Qqvd8tcxZHcSTy2yf+Z94SJ7jdgVU3a3ZO9zduv26Ap7oeS977G7Ihf3293ZI6f7Mwusvtt+7jM7PmXGY6t9LJY+an+cd++z17kNTrf6RL/9mostdEPPuePpbC063e7j9vthLGt37vZ2Tlb2tE57btEZT1xkv7jB9fY4x1f60ymcetY+M35K97AZnyraz+GtGb1n3M7XyYK9n0Pj9trWBWf/x3Oeg/cY1pIGAABAo6BgBAAAQBIFIwAAAJIoGAEAAJBEwQgAAIAkuqQXkAceeMCMR28xUseFF15YjeFggUp122an7Pdi994JM977gt0tOfJf1prx3//wjWa8YC9/qyXP5O07nJdweMjeUf+A3dksSUPr7PWnlz5hH4tcn93F3HHIfo7WEbvbdM977G7ZZU/WsO0SxyRjN7pLkgq5yq77TE/a77dcwX5ftWbt909Pq91VfeoSu1P55TPs8Uw56zn3L7bXa5ekNmdM49P2e3p0qt2Mj0za8YIzpvGxDjPu/Reaydh3FPP2sZakbMHpMnc+c9yl3FlLGgAAALV2wgVjCKErhHBRCOEnIYSnQgiTIYSxEMK2EMJXQwiLEo+9LITwcAhhNIQwGEK4I4TwjhMdE9DoxsfHdeutt+ryyy/X+vXr9Yc//EGSNpA3gK0wPaXBPU/quYf+Sdt+8U1NDO+TyBmgZqpxhfEjkn4u6ROSCpL+n6T7JJ0h6b9LeiSEcNLRDwohfFfSDZLeIOluSQ9L2irp3hDCRVUYF9CwbrrpJn3oQx/S9ddfr2w2q56eHkkaE3kDmAZefFzP3H+jDjz/sBSCsi3tEjkD1Ew1Csa8pP8paWOMcWOM8a9ijO+XtF7S45JeL+m7Rz4ghPA+SVdJGpB0dozxovJj/kKlovOGEIK/NAIwz7W2tuqKK67Qzp07tXPnzpnVc3aLvAFMIZPRSWvP1ebzv6izP/B3auvqk8gZoGZOuGCMMf6vGOOnYox/OCr+iqS/KX97cQjhyL9G/Xz59roY4zNHPOZBST+U1Cfp8hMdG9CoPvaxj+lHP/qRNmzY8Gdx8gawLT9ji87Ycok6e0/+szg5A9TGXHdJbyvftktaJumVEEKnpPeW4zcbj7lZ0uckXSDp23M8vgVlYGCgou37+/vN+NVXX12N4cDX3HmT6N4bO8XuHhx4g/3nacvOGzXjuaec9ZZ32s9baLdbDUdW2x+R/T960Iyfumm9GS92+B+1052LzfjBt9mdoIufsvfVOmpv377PPkb92+0La96atV6Xpt+mmXhM9TVHznidsH6TvVpG7Zzxjn1x2r7j1aLd4d/Va89QsLzHfl5vfebeRXZXdTZjv7h8wb+etfeg/d7tczqrh53u5tyo3SUdnGPqHdTYbbexe0tJhxH/8yDjTczQAJMXzHWX9Jnl27ykwfK/16uU1AdijHuMxzxWvt08x2MDGhV5A1SGnAHm2FwXjFeVb++MMebK/15TvrUSWDHGMUmHJC0JIfTM8fiARkTeAJUhZ4A5Nme/kg4hfEClvw3JS/rKEXfN/G7Jn5Wz1PnWJ6lH0sgxPNcO5y579l6gQdUqb8gZNAtyBqiNObnCGEJ4vaSfqvQXGV+MMW6b5SEApDaRN0AlyBmgRqp+hTGEsFLSnZKWSPpOjPF7R20y8xfYXYnddJdvZ726KEkxxk3OWHZI2ngs+wDqKZ/PS9JpklpVg7whZzDfxWJBImeAmqlqwRhCWCrpLpWS+AZJXzA2212+XeXso1ulXxEMxRiPqWDEsfnVr35V0farV6824729vdUYDsoGBwe1e/duqfQfX9PnTZvTzStJXfumzHhuib3+beuDS81451vsX54UP26vPd36v5eb8ekOuyty9K/ONeODG+zn7d/uv+bBzXb7Y/t+u1Nzcpm9/cAb7GM0utI+RtH5/VL7YXv/7lq2qe7NOersnM6NKzc+JM3XnHGOZXTWHo7+0sMK3lvLeUx20j7xmWE7PnXAfl+9HO3u/kKH/Rqyp9h/GeCtba1EJ3HLqD3Wg4vsbmhv+zZnje7oDCm/2DnYWeeNPmGfhOykP32Aez69BKxh93TVfiVdXpbplyr9pHWLpE/GaC7J/ZSknKTl5auRRzunfLu9WmMDGtXo6KjOP/985XI5qXSVg7wBEgr5nP742x/PXGEkZ4AaqUrBGEJol3SbpLdJ+pWkS2OMZp0cY5yQdE/52w8bm1xSvr29GmMDGlUul9OFF16ohx9+WN3d3ZK0h7wBfMXCtJ6+7waNDb6kTLZNImeAmjnhgjGEkJX0f1SaIPU+SRfHGO3fK/3Jd8q3Xw4hrDtiX+dJ+pRKUx385ETHBjSqQqGgSy+9VPfcc4/e/e53z/z6f7ZfLpA3WLBisahnH/yphvc/q57lZ8wsDUjOADVSjb9h/IykD5X/fVDS/wj2zP9fiDEelKQY490hhO+pNHfWEyGEX6vU7bZVpb/u+HiM8VAVxgY0pB/84Af6+c9/Lqm0os727dslaUUI4cajNiVvAEn7nvmdhvY8KUlqae/W+KFXJHIGqJlqFIxHrif0IXcr6RqVCkpJUozx6hDCEyoVnFslTUm6W9K1McYHqjAuoGENDQ299u+ZwlGlP8D/2FGbXiPyBtD01J+aJmYKR5EzQM2ccMEYY7xGpQQ9nsfeKOnGEx0D/lx5ipZ/5dlnn61oPx0ddsdZa6vTQoZjds011+iaa6557ftNmzZp586dO72pO4403/NmZFViXeUu+73Vvy1nxgc22WvBttrLJ2v8zpPN+Bmf3GXGn77bnpO564DdypiZ8haPtcOStPaf7LV6h8/sNOO9T4/Z27+u24xn8vZvbb3u5mLWHqzbDV2j9aJXvfEvteqNf/na99vv+JYmhvc1V864nbD+b96LTjoV25zz7qxL7XXudu+1450HnB05L2Fimb0evNcV3Dbiv+as857Od9r5N91pD2r8VGc/fc6g2p34tP28Ie/EE39I4d23ENaSBgAAwDxHwQgAAIAkCkYAAAAkUTACAAAgiYIRAAAASVVdSxqNIZOxfw7YsmWLGd+xY4cZX7dunRkHTkTbsN/u17vLnvN/qtf+qOr//aQZH1ljd09PLLe7JZ+/1e6Gzti7Ucd+u2u7u89eO3a83//ZfLrd7oYutDrrWJ/WZe/HWffaWy+34Hz6e1203trTjdC9Oe94nbDO5sE5h5KUcR5UdE6Mt05yscXeUcu4vZ9Fe+wcyOTtTuLO/fYTFzrtnMl3+znj5UbBydcJe3IETa2wZxTJON3QxSl7rCHnrM895cw4kDifoVj/NaM9XGEEAABAEgUjAAAAkigYAQAAkETBCAAAgCQKRgAAACRRMAIAACCJaXWaUDZrt/5/7WtfM+Mh2G3855xzTtXGBMzwpm2RpMllzpwfjomT2sz4kh3DZjyzvseMdwzY81xEZ86Svf+224wXOsywcivt6YIkacVd9sdwS86ZFsUZU9uIfWC97VPnwZKxZxpR9OaCQeWcqVMyBf8gx2g/qMW5HlTosLcvdNnxsZXedSX7ze69r6a77NcwudTefmqJ/wYtOtPeBO/N6Lx3w6T9f2V04pm8vf9Mzonbs/YoJM5nI0yf4+EKIwAAAJIoGAEAAJBEwQgAAIAkCkYAAAAkUTACAAAgiS7pBWTFihVm/Prrr6/xSIDqaJmwOylHz1hkxoPTLTm60u7OztjN0+rZbT9voc3ufux72v+o9Ro7M3m7XbJ11H7uTMHefnJJdT7m6Yauo0TnbCg6HbpTzoO8E+mEi232fkbOcLZ3JjoodNrJF1udcSa6+EPevtbVMm6/iKzTxRwz9nN7r8Edj9eF7XRDhwbuhE7hCiMAAACSKBgBAACQRMEIAACAJApGAAAAJFEwAgAAIIkuaQANL+t0fEZ7yVflu+yfhbPO+sxto87+K+wMbh23WzunO8HgNxIAAAY2SURBVCtvMfbWgJ5a7LxoLExOx63bPe1033tvdrej192NfYe33rKmnHiikzgz7YzVmdXAPUZOF7PTPO0fDO/YVbhee6PjCiMAAACSKBgBAACQRMEIAACAJApGAAAAJFEwAgAAIIkuaQANz1uj2VsA1+uG9rjL61a4HK83Tm+tWWDOVNgZXC3eus1e/LjM8brmfnfzwl5QnSuMAAAASKJgBAAAQBIFIwAAAJIoGAEAAJAUYqzsj8PnkxDCcHt7e8/atWvrPRQgadeuXcrlciMxxsX1HEcIYThksj0di/rrOQxgVpOjBxWLhcbImWy2p3UpOYPGlh88qFg4/pxp9oLxVUldkl6SNFM17qrfiFAD8/U8r5Y0HmM8pZ6DIGcWpPl6nskZ1NN8PNcnlDNNXTAeKYSwQ5JijJvqPRbMHc5z9XAsFwbOc/VwLBeOhXiu+RtGAAAAJFEwAgAAIImCEQAAAEkUjAAAAEiiYAQAAEDSgumSBgAAwPHhCiMAAACSKBgBAACQRMEIAACAJApGAAAAJFEwAgAAIImCEQAAAEkUjAAAAEhq+oIxhNAZQviHEMLTIYTJEMLLIYTrQwgr6z02HJsQQlcI4aIQwk9CCE+Vz+NYCGFbCOGrIYRFicdeFkJ4OIQwGkIYDCHcEUJ4Ry3HP9+QM82BvKkdcqY5kDNpTT1xdwihQ9I/SzpX0iuS7pN0uqS3STog6dwY43N1GyCOSQjhP0v6cfnbP0h6UtJiSe+Q1CPpj5L+TYxx/1GP+66kqyRNSLpLUoekfycpSLokxnhrTV7APELONA/ypjbImeZBzswixti0X5KukxQlPSBp0RHxz5fjv6n3GPk6pvP4MUk/krThqPipkh4rn8ubjrrvfeX4QUnrjoifJyknaUhSX71fW6N9kTPN80Xe1Ow4kzNN8kXOzHJ86j2AOTzxbZIOlU/km437t5Xve0u9x8rXCZ3n88rncVJS2xHxO8rxq43HfK9839/We/yN9EXOLJwv8qZqx5GcWSBf5Exs6r9hfKekXkm7YoyPG/ffXL69oHZDwhzYVr5tl7RMKv09kaT3luM3G4/h3NvImYWDvKkOcmbhWPA508wF49nl28ec+2fim2swFsydM8u3eUmD5X+vVympD8QY9xiP4dzbyJmFg7ypDnJm4VjwOdPMBeOa8q11Eo+Mn1aDsWDuXFW+vTPGmCv/O3nuY4xjKv0aaUkIoWeOxzefkDMLB3lTHeTMwrHgc6aZC8aZ9vdx5/6x8u28P4kLVQjhA5IuV+knvq8ccdds517i/FvImQWAvKkqcmYBIGdKmrlgRBMLIbxe0k9VmrbgizHGbbM8BFjwyBugMuTMnzRzwThavu1y7u8u347UYCyoovJkuHdKWiLpOzHG7x21yWznXuL8W8iZJkbezAlypomRM3+umQvG3eXbVc79M/EXazAWVEkIYalKE6OeJukGSV8wNkue+xBCt6Q+SUMxxnmfxFVEzjQp8mbOkDNNipz515q5YJy5bHyOc/9MfHsNxoIqKC/L9EtJGyXdIumTsTzZ1VGeUmnC1OXO0lycexs504TImzlFzjQhcsbWzAXj7yQdlrQ2hPAm4/5Lyre3125IOF4hhHZJt6m03NavJF0aYyxY28YYJyTdU/72w8YmnHsbOdNkyJs5R840GXImod4zh8/ll/60ZNPvJHUfEWfJpnn0JSmr0k95UdK9krqO4TGp5Zom1UTLNVX5WJMzTfJF3tTsOJMzTfJFzqS/QvmFNaXyovC/kfR2/WlR+NPK37Mo/DwRQrhK0nfL3/5c0rCz6RdijAePeNzMgvDjkn6t0jJeW9VsC8JXETnTPMib2iBnmgc5k9bUBaP02tI9/1XSRyStVmmG9jslfSXaM7OjwYQQrpH0345h0zNijC8c9djLJH1G0gZJU5L+RdK1McYHqjvK5kHONAfypnbImeZAzqQ1fcEIAACAE9PMTS8AAACoAgpGAAAAJFEwAgAAIImCEQAAAEkUjAAAAEiiYAQAAEASBSMAAACSKBgBAACQRMEIAACAJApGAAAAJFEwAgAAIImCEQAAAEkUjAAAAEiiYAQAAEASBSMAAACSKBgBAACQRMEIAACAJApGAAAAJP1/lzqBwfNRUuEAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 750x2250 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "index = 5\n",
    "fig, axs = plt.subplots(1, 3, figsize=(5, 15))\n",
    "axs[0].imshow(x_test[index, :, :, 0], cmap='gray_r')\n",
    "axs[1].imshow(attributions[index, :, :, 0], cmap='viridis')\n",
    "axs[2].imshow(attributions_pca_recovered[index, :, :], cmap='viridis')"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
